Technical Note TN20TT
Technnical Note Template

目次

このテクニカルノートでは、Carbonベースのアプリケーションに用いられる'plst'リソースについて説明します。

シングルバイナリのCarbon CFMアプリケーションを作成するデベロッパが対象です。

 2002年2月7日更新






'plst'(property list)リソースについて

  1. 'plst'リソースはMac OS Xより前のシステムで用いられていた、'vers''open''FREF', 'BNDL''kind'リソースの情報を含みます。Mac OS Xでは'plst'リソースの情報が、以前の形式のリソースの情報より優先して使用されます。
  2. 'plst'リソースはMac OS Xで稼動するシングルバイナリのCFM Carbonアプリケーションにのみ有効で、Mac OS X以前のシステムでは無視されます。よって、Mac OS X 以前のシステムでも稼動させる場合は、引き続き'vers''open''FREF', 'BNDL''kind'リソースも残す必要があります。
  3. 'plst'リソースのIDは常に0とします。
  4. シングルバイナリアプリケーションの'plst'リソースは、バンドル形式アプリケーションのInfo.plistファイルに相当します。

先頭に戻る

'plst'リソースの作成方法

'plst'リソースは容易に「手書き」で作ることができます。キーと値の対のリストで構成されており、アプリケーションの'plst'リソースにペーストします。例えばResEditでタイプが'plst'の新たなリソースを作成し、XMLで記述したplistをペーストします。'plst'リソースの記述にはXMLを使うことをお勧めします。

'plst'のリソーステンプレートはありませんが、.rファイルに次のよう記述することで、任意のテキストファイルから読み込むことができます。

read 'plst' (0) "MyFile.plist"

.rファイルと.plistファイルが異なるディレクトリにある場合はパスも指定します。

プロパティリストの作成と編集には、PropertyListEditorアプリケーションを使うことをお勧めします。これは、Mac OS XのDeveloper/Applicationsにあります。

Mac OS Xではplコマンドも使えます。plはプロパティリストのチェックを行います。このツールは、Terminalアプリケーションから以下のように使います。



pl  yourPropertyListFile


先頭に戻る

定義すべきキー

単一のファイルで構成されているアプリケーション(バンドルされていないアプリケーション)では必ず以下のキーを定義して下さい。

CFBundleIdentifier

CFBundleName
CFBundlePackageType
CFBundleSignature
CFBundleVersion
CFBundleShortVersionString
CFBundleLongVersionString
CFBundleIconFile
NSHumanReadableCopyright
NSAppleScriptEnabled

CFBundlePackageType(ファイルタイプ)とCFBundleSignature(クリエータコード)は、各々実行ファイルのファイルタイプとクリエータコードと一致しなければなりません。

LaunchServicesはNSAppleScriptEnabledキーを見ることで、ClassicまたはシングルファイルCFMアプリケーションがスクリプティングに対応しているかどうかを判断しています。以前、'aete'リソースの有無がこの役目を果たしていました。

以下のキーは必須ではありませんが、該当するキーを定義することをお勧めします。

LSPrefersCarbon
LSPrefersClassic
LSRequiresCarbon
LSRequiresClassic



注意:
上記の4つのキーの内、1つのキーのみを定義して下さい。'plst'に上記のキーが一つも定義されていない場合、'carb' 0リソースを持っていればデフォルトでLSPrefersCarbonキーがオンに、'carb' 0リソースを持っていなければデフォルトでLSRequiresCarbonキーがオンになります。



LSPrefersCarbonLSPrefersClassicは、Mac OS X Finderの「情報を見る」の「Classic環境で開く」チェックボックスの設定により、デベロッパが指定したデフォルトをユーザーが上書きすることを許します。LSRequiresCarbonLSRequiresClassicはユーザーが変更することはできません。

アプリケーションがドキュメントを開く事をサポートする場合は、ドキュメントタイプ毎に以下の項目を定義して下さい。

CFBundleTypeExtensions - このファイルタイプの拡張子
CFBundleTypeOSTypes - このファイルタイプのOSType
CFBundleTypeIconFile - このファイルタイプのアイコンのリソースID
CFBundleTypeName - このファイルタイプのFinderなどで表示されるべき名前
CFBundleTypeRole - このファイルタイプに対するアプリケーションの役割(EditorまたはViewer)
LSTypeIsPackage - このドキュメントはCFBundleOSTypeまたはCFBundleFileExtensionで定義されたパッケージである。デフォルトはオフ。アプリケーションがドキュメントをパッケージとして扱う場合に“YES”にする。(例: TextEditの.rtfd、Project Builder の.pbproj。)

先頭に戻る

'plst'のサンプル

例として、SimpleTextの'plst'を示します。



<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"><plist version="0.9"><dict>    <key>CFBundleInfoDictionaryVersion</key>    <string>6.0</string>    <key>CFBundleIdentifier</key>    <string>com.apple.SimpleText</string>    <key>CFBundleName</key>    <string>Simple Text</string>    <key>CFBundlePackageType</key>    <string>APPL</string>    <key>CFBundleSignature</key>    <string>ttxt</string>    <key>CFBundleDevelopmentRegion</key>    <string>English</string>    <key>LSPrefersCarbon</key>    <true/>    <key>CFBundleVersion</key>    <string>1.4</string>    <key>CFBundleShortVersionString</key>    <string>1.4</string>    <key>CFBundleLongVersionString</key>    <string>1.4, Copyright 1985-2001 Apple Computer</string>    <key>CFBundleIconFile</key>    <string>128</string>    <key>NSApplescriptEnabled</key>    <Boolean>Yes</Boolean>    <key>NSHumanReadableCopyright</key>    <string>Copyright (c) 1985-2001 Apple Computer</string>    <key>CFBundleDocumentTypes</key>    <array>        <dict>            <key>CFBundleTypeOSTypes</key>            <array>                <string>TEXT</string>            </array>            <key>CFBundleTypeIconFile</key>            <string>129</string>            <key>CFBundleTypeName</key>            <string>Text document</string>            <key>CFBundleTypeExtensions</key>            <array>                <string>txt</string>                <string>text</string>            </array>            <key>CFBundleTypeRole</key>            <string>Editor</string>        </dict>        <dict>            <key>CFBundleTypeOSTypes</key>            <array>                <string>ttro</string>            </array>            <key>CFBundleTypeIconFile</key>            <string>130</string>            <key>CFBundleTypeName</key>            <string>Read Only document</string>            <key>CFBundleTypeRole</key>            <string>Viewer</string>        </dict>        <dict>            <key>CFBundleTypeOSTypes</key>            <array>                <string>PICT</string>            </array>            <key>CFBundleTypeIconFile</key>            <string>131</string>            <key>CFBundleTypeName</key>            <string>PICT document</string>            <key>CFBundleTypeExtensions</key>            <array>                <string>pict</string>            </array>            <key>CFBundleTypeRole</key>            <string>Viewer</string>            <key>CFBundleTypeSuffixes</key>            <array>                <string>pict</string>            </array>        </dict>    </array></dict></plist>


先頭に戻る

追加情報と注意点

CFBundleIconFileCFBundleTypeIconFile

CFBundleIconFileCFBundleTypeIconFileの値は'icns'リソースのIDを指します。アプリケーションがシングルバイナリでなくバンドルパッケージの場合は、この値はバンドルの中の.icnsファイルを指します。これらの変更の結果を確認するには、Mac OS Xで一度ログインし直す必要があります。

CFBundleDocumentTypesCFBundleTypeOSTypes

TN 1085(Using the Drag Manager to Interact with and Manipulate File System Entities)にありますように、クリエータコードが'MACS'でファイルタイプが'fold'や'disk'は、Finderにアプリケーションアイコンへのフォルダーやボリュームのドロップが可能である事を示します。これらのタイプは CFBundleTypeOSTypesとしても有効ですが、ドロップできるかどうかの判断にはファイルタイプのみが用いられますので、クリエータコードを指定する必要はありません。またこれは、CFBundleTypeExtensionの値として指定されたドキュメントの拡張子に対しても同様です。

CSResourcesFileMapped

CSResourcesFileMappedキーがオンだと、CFBundleはアプリケーションのリソースフォークをファイルマップされた形で開きます。ファイルマップされたリソースフォークへの書き込みは禁止されています(セグメンテーションエラーとなります)が、大きな利点が2つあります。1つ目はリソースマップがすべてメモリに読み込まれない点です。リソースマップは必要な部分だけが読み込まれます。2つ目はリソースハンドルが特別扱いされることです。リソースハンドルはメモリ内でコピーが作られるのではなく、ファイルマップされたデータをそのまま参照するよう仕組みとなります。CSResourcesFileMappedキーはBooleanでデフォルトの値はfalseです。

'carb'リソース

ID 0の空(サイズがゼロバイト)の'carb'リソースは、Mac OS XにこのアプリケーションがCarbonアプリケーションであると知らせる初期の方法でした。'plst'リソースは'carb'リソースに取ってかわりますが、1つ例外があります。Mac OS 9.1では'carb'リソースを持ったアプリケーションはProcess Managerがスタックとヒープメモリを若干増やします。

先頭に戻る

 

参考文献

関連情報が、Mac OS X Release NotesのInfoPlistsCFBundlesSystem Overview、Core Foundation documentationのproperty list key servicesconcepts にあります。

先頭に戻る